# -*- coding:utf-8 -*-
import scrapy
from mySpider.items import MyspiderItem

"""
#### 普通方式，非管道方式.
class SpecialspiderSpider(scrapy.Spider):
    # 爬虫名称
    name = 'specialSpider'

    # 限定爬虫获取的连接域名，超出该域名，则舍弃超出域名的连接.
    allowed_domains = ['itcast.cn']

    # 给定一个初始连接，开始进行连接的获取.
    start_urls = ["http://www.itcast.cn/channel/teacher.shtml",]

    # 设置解析网页的格式/方法.
    def parse(self, response):

        # 定义一个列表，保存爬取老师的信息.
        items = []

        for each in response.xpath("//div[@class='li_txt']"):

            # 将我们得到的数据封装到一个 `ItcastItem` 对象
            item = MyspiderItem()

            # extract()方法返回的都是unicode字符串.
            name = each.xpath("h3/text()").extract()
            level = each.xpath("h4/text()").extract()
            info = each.xpath("p/text()").extract()

            #x path返回的是包含一个元素的列表.
            item['name'] = name[0]
            item['level'] = level[0]
            item['info'] = info[0]

            items.append(item)

        # 直接返回最后数据
        return items
"""


#### 管道方式实现
class SpecialspiderSpider(scrapy.Spider):
    # 爬虫名称
    name = 'specialSpider'

    # 限定爬虫获取的连接域名，超出该域名，则舍弃超出域名的连接.
    allowed_domains = ['itcast.cn']

    # 给定一个初始连接，开始进行连接的获取.
    start_urls = ["http://www.itcast.cn/channel/teacher.shtml",]

    # 设置解析网页的格式/方法.
    def parse(self, response):

        # 定义一个列表，保存爬取老师的信息.
        items = []

        for each in response.xpath("//div[@class='li_txt']"):

            # 将我们得到的数据封装到一个 `ItcastItem` 对象
            item = MyspiderItem()

            # extract()方法返回的都是unicode字符串.
            name = each.xpath("h3/text()").extract()
            level = each.xpath("h4/text()").extract()
            info = each.xpath("p/text()").extract()

            #x path返回的是包含一个元素的列表.
            item['name'] = name[0]
            item['level'] = level[0]
            item['info'] = info[0]

            # 生成，迭代，下一个.
            yield item